Computer generated images are typically made up of many differing components or graphical objects which are rendered and composited together to create a final image. In recent times, an “opacity channel” (also known as a “matte”, an “alpha channel”, or simply “opacity”) has been commonly used. The opacity channel contains information regarding the transparent nature of each object. The opacity channel is stored alongside each instance of a colour, so that, for example, a pixel-based image with opacity stores an opacity value as part of the representation of each pixel. An object without explicit opacity channel information is typically understood to be fully opaque within some defined bounds of the object, and assumed to be completely transparent outside those bounds.
A Graphic Object Tree (hereinafter “GOB tree”) offers a systematic means for representing an image in terms of its constituent objects and which facilitates later rendering. GOB trees typically comprise a plurality of nodes including leaf nodes, unary nodes and binary nodes. Nodes of higher degree, or of alternative definition may also be used. A leaf node, being the outer most node of a GOB tree, has no descendent nodes and represents a primitive constituent of an image. Unary nodes represent an operation which modifies the pixel data coming out of the part of the tree below the unary operator. Unary nodes include such operations as colour conversions, convolutions (blurring etc) and operations such as red-eye removal. A binary node typically branches to left and right subtrees, wherein each subtree is itself a GOB tree comprising at least one leaf node. Binary nodes represent an operation which combines the pixel data of its two children to form a single result. For example, a binary node may be one of the standard “compositing operators” such as OVER, IN, OUT, ATOP and alpha-XOR, examples of which and other are seen in FIG. 30.
Several of the above types of nodes may be combined to form a GOB tree. An example of this is shown in FIG. 31. The result of the left-hand side of the GOB tree may be interpreted as a colour converted first image being clipped to spline boundaries defined by a path. This construct is composited with a second image.
Although the non-transparent area of a graphical object may of-itself be of a certain size, it need not be entirely visible in a final image, or only a portion of the object may have an effect on the final image. For example, assume an image of a certain size is to be rendered on a display. If the image is positioned so that only the top left corner of the image is displayed by the display device, the remainder of the image is not displayed. The final image as displayed on the display device thus comprises the visible portion of the image, and the invisible portion in such a case need not be rendered.
Another way in which only a portion of an object may have an effect is when the portion is obscured by another object. For example, a final image to be displayed (or rendered) may comprise one or more opaque graphical objects, some of which obscure other graphical objects. Hence, the obscured objects have no effect on the final image.
Conventionally, Raster Image Processor (RIP) modules have been utilised to process and render graphical images. The performance of an RIP can be affected by a number of factors including the volume of pixel data processed, the rendering resolution, which is related to the volume of data processed, the complexity of the rendering task, and the efficiency of the methods employed by the RIP. A number of these factors are outside the control of the RIP (e.g. rendering resolution, complexity). Whilst the volume of data processed by the RIP is very much affected by such factors as rendering resolution and job complexity, there is a minimum volume of data, particularly input pixel data, that must be processed in order to produce the required output image. Each pixel in the output image is derived from a specific source or sources. A pixel may be internally generated, or it may be the product of one or more input images used in the render.
An ideal RIP would only process or generate data which contributes to the final rendered image meaning that all computing resources are being efficiently utilised. However, no RIP is ideal. The performance of most RIPs is compromised by redundant or repetitive processing of data.
Many conventional RIP modules render an object by compositing every pixel within the object's bounding box unless the object is known to be fully opaque and occupies the whole bounding box. This often involves much unnecessary work since objects with irregular boundary outlines must first be padded with transparent pixels out to their bounding boxes, after which the padded pixels have to undergo the fall compositing operation.